订单处理

chengzhenyu 8 年之前
父节点
当前提交
519a7a42b3

+ 2 - 0
app/src/main/java/ai/pai/lensman/main/MainPresenter.java

@@ -22,6 +22,7 @@ import ai.pai.lensman.bean.PhotoBean;
22 22
 import ai.pai.lensman.bean.SessionBean;
23 23
 import ai.pai.lensman.db.DBService;
24 24
 import ai.pai.lensman.db.Preferences;
25
+import ai.pai.lensman.service.OrderDealService;
25 26
 import ai.pai.lensman.service.UploadService;
26 27
 
27 28
 public class MainPresenter implements MainContract.Presenter,BaseInteractor.InteractorListener<ArrayList<String>>,UploadService.PhotoUploadListener {
@@ -91,6 +92,7 @@ public class MainPresenter implements MainContract.Presenter,BaseInteractor.Inte
91 92
         }
92 93
         sessionSeq = sessionList.size();
93 94
         registerWifiChangeReceiver();
95
+        App.getAppContext().startService(new Intent(App.getAppContext(), OrderDealService.class));
94 96
         App.getAppContext().startService(new Intent(App.getAppContext(), UploadService.class));
95 97
         App.getAppContext().bindService(new Intent(App.getAppContext(),UploadService.class),serviceConnection, Context.BIND_AUTO_CREATE);
96 98
     }

+ 54 - 40
app/src/main/java/ai/pai/lensman/service/OrderDealService.java

@@ -19,6 +19,8 @@ import java.net.HttpURLConnection;
19 19
 import java.net.URL;
20 20
 import java.util.ArrayList;
21 21
 import java.util.HashMap;
22
+import java.util.Timer;
23
+import java.util.TimerTask;
22 24
 
23 25
 import ai.pai.lensman.bean.OrderBean;
24 26
 import ai.pai.lensman.db.Preferences;
@@ -31,8 +33,6 @@ public class OrderDealService extends Service {
31 33
 
32 34
     private ArrayList<OrderBean> orderList;
33 35
 
34
-    private ArrayList<OrderBean> failedOrderList;
35
-
36 36
     private static final String TAG = "czy";
37 37
 
38 38
     @Override
@@ -42,7 +42,7 @@ public class OrderDealService extends Service {
42 42
 
43 43
     @Override
44 44
     public int onStartCommand(Intent intent, int flags, int startId) {
45
-        if(!isQueueEmpty()){
45
+        if (!isQueueEmpty()) {
46 46
             return START_STICKY;
47 47
         }
48 48
         startQuery();
@@ -68,7 +68,7 @@ public class OrderDealService extends Service {
68 68
                             for (int k = 0; k < orders.length(); k++) {
69 69
                                 JSONObject orderObj = orders.getJSONObject(k);
70 70
                                 OrderBean bean = new OrderBean();
71
-                                //TODO
71
+
72 72
                                 orderList.add(bean);
73 73
                             }
74 74
                         }
@@ -89,39 +89,48 @@ public class OrderDealService extends Service {
89 89
             @Override
90 90
             protected void onPostFail() {
91 91
                 super.onPostFail();
92
+                new Timer().schedule(
93
+                        new TimerTask() {
94
+                            @Override
95
+                            public void run() {
96
+                                startQuery();
97
+                            }
98
+                        }, 15000
99
+                );
92 100
             }
93 101
         }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.QUERY_ORIGIN_ORDER_URL);
94 102
 
95 103
     }
96 104
 
97 105
     private void dealOrder() {
98
-        if (!isQueueEmpty()){
106
+        if (!isQueueEmpty()) {
99 107
             OrderBean orderBean = orderList.get(0);
100 108
             fetchOriginFromBox(orderBean);
101
-        }else{
109
+        } else {
102 110
             startQuery();
103 111
         }
104 112
     }
105 113
 
106
-    private void fetchOriginFromBox(OrderBean orderBean){
114
+    private void fetchOriginFromBox(OrderBean orderBean) {
107 115
         HashMap<String, String> params = new HashMap<>();
108 116
         params.put("lensman", Preferences.getInstance().getLensManId());
109
-        params.put("session",orderBean.photoBean.sessionId);
110
-        params.put("name",orderBean.photoBean.photoName);
111
-        new HttpPostTask(params){
117
+        params.put("session", orderBean.photoBean.sessionId);
118
+        params.put("name", orderBean.photoBean.photoName);
119
+        new HttpPostTask(params) {
112 120
             OrderBean bean = new OrderBean();
121
+
113 122
             @Override
114 123
             protected boolean parseResponse(String response) {
115
-                LogHelper.d(TAG,"fetchOriginFromBox get response string = "+response);
116
-                try{
124
+                LogHelper.d(TAG, "fetchOriginFromBox get response string = " + response);
125
+                try {
117 126
                     JSONObject json = new JSONObject(response);
118 127
                     int status = json.getInt("status");
119
-                    if(status == 200){
128
+                    if (status == 200) {
120 129
                         JSONObject data = json.getJSONObject("data");
121 130
                         //TODO
122
-                        }
123
-                        return true;
124
-                }catch (Exception e){
131
+                    }
132
+                    return true;
133
+                } catch (Exception e) {
125 134
                     e.printStackTrace();
126 135
                 }
127 136
                 return false;
@@ -130,23 +139,25 @@ public class OrderDealService extends Service {
130 139
             @Override
131 140
             protected void onPostFail() {
132 141
                 super.onPostFail();
142
+                orderList.remove(bean);
143
+                dealOrder();
133 144
             }
134 145
 
135 146
             @Override
136 147
             protected void onPostSuccess() {
137 148
                 super.onPostSuccess();
138
-                new SavePhotoTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(),bean);
149
+                new SavePhotoTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), bean);
139 150
             }
140
-        }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(),BoxUrlContainer.FETCH_ORIGIN_URL);
151
+        }.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), BoxUrlContainer.FETCH_ORIGIN_URL);
141 152
 
142 153
     }
143 154
 
144
-    private void uploadOrigin(OrderBean bean){
155
+    private void uploadOrigin(OrderBean bean) {
145 156
         new UploadTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor());
146 157
     }
147 158
 
148
-    private boolean isQueueEmpty(){
149
-        return (orderList==null || orderList.size()==0);
159
+    private boolean isQueueEmpty() {
160
+        return (orderList == null || orderList.size() == 0);
150 161
     }
151 162
 
152 163
     public class OrderServiceBinder extends Binder {
@@ -160,15 +171,16 @@ public class OrderDealService extends Service {
160 171
     class SavePhotoTask extends AsyncTask<OrderBean, Integer, Boolean> {
161 172
 
162 173
         private OrderBean orderBean;
163
-        public SavePhotoTask(OrderBean bean){
174
+
175
+        public SavePhotoTask(OrderBean bean) {
164 176
             this.orderBean = bean;
165 177
         }
166 178
 
167 179
         @Override
168 180
         protected Boolean doInBackground(OrderBean... params) {
169
-            OrderBean photoBean = params[0];
170
-            String  path = BoxUrlContainer.PHOTO_PATH_PREFIX_URL+orderBean.photoBean.photoPath;
171
-            LogHelper.d(TAG,"保存照片到本地,图片链接地址为"+path);
181
+
182
+            String path = BoxUrlContainer.PHOTO_PATH_PREFIX_URL + orderBean.photoBean.photoPath;
183
+            LogHelper.d(TAG, "保存照片到本地,图片链接地址为" + path);
172 184
             FileOutputStream fOut = null;
173 185
             HttpURLConnection conn = null;
174 186
             InputStream inStream = null;
@@ -178,30 +190,30 @@ public class OrderDealService extends Service {
178 190
                 conn.setConnectTimeout(5 * 1000);
179 191
                 conn.setRequestMethod("GET");
180 192
                 inStream = conn.getInputStream();
181
-                if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
182
-                    String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator+orderBean.photoBean.sessionId+File.separator+ Constants.ORIGIN_DIR_NAME;
193
+                if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
194
+                    String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + orderBean.photoBean.sessionId + File.separator + Constants.ORIGIN_DIR_NAME;
183 195
                     File dir = new File(dirPath);
184 196
                     dir.mkdirs();
185 197
                     File file = new File(dir, orderBean.photoBean.photoName);
186 198
                     fOut = new FileOutputStream(file);
187 199
                     byte[] buffer = new byte[2048];
188
-                    int len ;
189
-                    while((len=inStream.read(buffer))!=-1){
190
-                        fOut.write(buffer,0,len);
200
+                    int len;
201
+                    while ((len = inStream.read(buffer)) != -1) {
202
+                        fOut.write(buffer, 0, len);
191 203
                         fOut.flush();
192 204
                     }
193 205
                     fOut.flush();
194
-                    LogHelper.d(TAG,"保存照片到本地,图片保存至"+file.getAbsolutePath()+"图片大小为"+file.length()+"字节\n\n");
206
+                    LogHelper.d(TAG, "保存照片到本地,图片保存至" + file.getAbsolutePath() + "图片大小为" + file.length() + "字节\n\n");
195 207
                 }
196 208
                 return true;
197 209
             } catch (Exception e) {
198 210
                 e.printStackTrace();
199 211
             } finally {
200
-                try{
212
+                try {
201 213
                     inStream.close();
202 214
                     conn.disconnect();
203 215
                     fOut.close();
204
-                }catch (Exception e){
216
+                } catch (Exception e) {
205 217
                     e.printStackTrace();
206 218
                 }
207 219
             }
@@ -213,8 +225,9 @@ public class OrderDealService extends Service {
213 225
             super.onPostExecute(result);
214 226
             if (result) {
215 227
                 uploadOrigin(orderBean);
216
-            }else{
217
-
228
+            } else {
229
+                orderList.remove(orderBean);
230
+                dealOrder();
218 231
             }
219 232
         }
220 233
     }
@@ -230,21 +243,21 @@ public class OrderDealService extends Service {
230 243
 
231 244
         @Override
232 245
         protected Boolean doInBackground(Void... params) {
233
-            for(int k = 0 ; k< 5;k++){
246
+            for (int k = 0; k < 5; k++) {
234 247
                 try {
235 248
                     String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.photoBean.sessionId
236
-                            + File.separator + ai.pai.lensman.utils.Constants.THUMBNAIL_DIR_NAME;
249
+                            + File.separator + Constants.ORIGIN_DIR_NAME;
237 250
                     File dir = new File(dirPath);
238 251
                     dir.mkdirs();
239 252
                     File photo = new File(dir, bean.photoBean.photoName);
240
-                    LogHelper.d(TAG, "上传照片 第"+k+"次尝试"+ bean);
253
+                    LogHelper.d(TAG, "上传照片 第" + k + "次尝试" + bean);
241 254
                     if (photo.exists() && photo.isFile()) {
242 255
                         PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.ORIGIN_PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis());
243 256
                         photoUploadUtils.addFileParameter("photo", photo);
244 257
                         photoUploadUtils.addTextParameter("user_id", bean.photoBean.lensmanId);
245 258
                         photoUploadUtils.addTextParameter("session_id", bean.photoBean.sessionId);
246 259
                         photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoBean.photoId));
247
-                        photoUploadUtils.addTextParameter("nickname",Preferences.getInstance().getUserName());
260
+                        photoUploadUtils.addTextParameter("nickname", Preferences.getInstance().getUserName());
248 261
 
249 262
                         String result = new String(photoUploadUtils.send(), "UTF-8");
250 263
                         JSONObject resultObj = new JSONObject(result);
@@ -273,7 +286,8 @@ public class OrderDealService extends Service {
273 286
                 LogHelper.d(TAG, "上传 UploadTask " + bean + "  fail ");
274 287
             }
275 288
         }
276
-
277 289
     }
278 290
 
291
+
292
+
279 293
 }